iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
Mobile Development

大一之 Android Kotlin 自習心路歷程系列 第 12

[Day 12] Android in Kotlin: Kotlin: 使用 Intent 在畫面之間傳遞訊息

  • 分享至 

  • xImage
  •  

在 android 的開發過程中,會有很多的 activity 跟 fragment,如果想要在畫面之間傳遞訊息的話可以用以下幾種方法

Between Activities

首先要先知道如何開啟其他的畫面。
如果想要在從一個 activity 開啟另一個 activity 的時候,可以使用 Intent。

val i= Intent(this, ResultActivity::class.java)
startActivity(i)

或者也可以不用宣告出來,直接寫在裡面

startActivity(Intent(this, ResultActivity::class.java))

這邊用一個小小的範例做示範:在 FirstActivity 裡有一個 editText 跟可以跳去 ResultActivity 的 Button
intent first
intent result
並且把剛剛 EditText 裡的字串顯示在 ResultActivity 的 TextView 上,達到兩個 activity 傳遞資料的效果

Intent put Extra

而第一個方法就是用 putExtra 讓開啟 activity 的 intent 帶資料,
在 Extra 裡面跟 Map 一樣是以 <key, value> 的形式儲存。

val i= Intent(this, ResultActivity::class.java)
i.putExtra("Text", it.toString())

startActivity(i)


putEntra 透過多載,可以輸入眾多不同資料型態的 value。

使用時再去打 intent 透過 key 就可以得到資料了

val text= intent.getStringExtra("Text")

這裡的 intent 是並不是我宣告的
intent from getIntent()

Bundle

如果需要更大量的資料,可以把 Bundle 加進 intent 裡,多了一層 buddle,就能夠再整理資料。bundle 的資料放入方式跟 intent 的 extra 可以說是大同小異,也都是 key value, key value 的形式。

val i= Intent(this, ResultActivity::class.java)

val bundle= Bundle().apply {
    putString("Text", it.toString())
}

i.putExtra("TextBundle", bundle)

startActivity(i)
val bundle= intent.getBundleExtra("TextBundle")
val text= bundle?.getString("Text")

另外需要注意的是,包括剛剛的 Extra 跟這裡的 Bundle 拿到的字串都是 String? 型態,也就是有可能為空。在使用上記得加上濾空


上一篇
[Day 11]Android in Kotlin: View Pager 2 —— FragmentStateAdapter 使用分享
下一篇
[Day 13]Android in Kotlin: ShapeDrawable 的 Rectangle 製作
系列文
大一之 Android Kotlin 自習心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言